package com.zhuiyun.project.api.vipPlan.service;

import com.zhuiyun.project.api.vipPlan.model.*;
import com.zhuiyun.project.common.errorCode.CommonException;
import com.zhuiyun.project.common.response.CommonResult;

import java.util.Date;
import java.util.List;

/**
 * @InterfaceName VipPlanService
 * @Description TODO 会员课程业务逻辑层
 * @Author 杨友朋
 * @Date 2023/12/4 15:45
 **/
public interface VipPlanService {
    /**
     * @Author 杨友朋
     * @Description 查询训练计划
     * @Date 2023/12/4 18:37
     * @Return CommonResult
     * @param coachId
     */
    CommonResult selectPlan(int coachId);

    /**
     * @Author 杨友朋
     * @Description 学员添加训练计划
     * @Date 2023/12/4 20:33
     * @Return CommonResult
     * @param addPlanModel
     */
    CommonResult memberAddPlan(AddPlanModel addPlanModel);

    /**
     * @param memberId
     * @param coachCode
     * @Author 杨友朋
     * @Description 学员查询训练动作
     * @Date 2023/12/4 20:33
     * @Return CommonResult
     */
    CommonResult selectAction(int memberId, String isComplete, String coachCode);

    /**
    * @Author 杨友朋
    * @Description 查询系列
    * @Date 2023/12/6 9:44
    * @Return CommonResult
    * @param coachId
    */
    CommonResult selectSeries(int coachId,String venueUniqueIdentifier);

    /**
     * @Author 杨友朋
     * @Description 查询时间
     * @Date 2023/12/6 9:44
     * @Return CommonResult
     * @param coachId,reservationTime
     */
    CommonResult selectReservationTime(int coachId,String reservationTime);

    /**
     * @Author 杨友朋
     * @Description 添加预约
     * @Date 2023/12/6 13:41
     * @Return CommonResult
     * @param reservationPlanModel
     */
    CommonResult reservationPlan(ReservationPlanModel reservationPlanModel) throws CommonException;

    /**
    * @Author 杨友朋
    * @Description
    * @Date 2023/12/7 10:21
    * @Return CommonResult
    * @param invitationCode,selectYear
    */
    CommonResult selectAllPlan(String invitationCode, String selectYear, String isComplete, String selectMonth, String daiXunLianDate);

    CommonResult selectActionByPlan(int planId);

    CommonResult selectActionByActionId(int actionId);

    CommonResult removeActionCount(int actionId);

    CommonResult insertActionCount(ActionCountModel actionCountModel);

    CommonResult updateActionCount(ActionCountModel actionCountModel);

    CommonResult removeAction(int actionId);

    CommonResult getFitnessType(int fitnessPurposeId);

    CommonResult getAllAction(int fitnessTypeId);

    CommonResult insertAction(InsertPlanActionModel planActionModel);
    CommonResult selectReservationById(int courseId);

    CommonResult cancelReservation(int courseId, int studentId);

    CommonResult completePlan(AddPlanModel addPlanModel);
    CommonResult upCompletePlan(AddPlanModel addPlanModel);

    CommonResult saveImageToDatabase(AddImageCaseModel addImageCaseModel);

    CommonResult DeleteImageToDatabase(AddImageCaseModel addImageCaseModel);
    /**
     * @Author wx
     * @Description 根据教练id和租户标识查询时间
     * @Date 2023/12/11 14:18
     * @Return
     * @param id（教练id）
     */
    CommonResult getSelectYear(Integer id, String venueUniqueIdentifier);

    /**
     * @Author wx 查询约课状态
     * @Description
     * @Date 2023/12/14 11:30
     * @Return
     * @param studentId
     */
    CommonResult selectResStatus(Integer courseId, Integer studentId, Integer coachId);

    CommonResult getCount(List<Date> dateList, String invitationCode, Integer coachId);
}
